package com.cc.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cc.base.PageResponse;
import com.cc.base.ResponseResult;
import com.cc.pojo.domain.User;
import com.cc.pojo.dto.LoginDto;
import com.cc.pojo.dto.RegisterDto;
import com.cc.pojo.dto.UserDto;
import com.cc.pojo.dto.UserPageDto;
import com.cc.pojo.vo.UserVo;
import jakarta.servlet.http.HttpServletRequest;

import java.util.Map;

public interface UserService extends IService<User> {
    /**
     * 登录
     *
     * @param loginDto
     * @return
     */
    ResponseResult<Map> login(LoginDto loginDto, HttpServletRequest request);

    /**
     * 注册
     * @param registerDto
     * @return
     */
    ResponseResult<String> register(RegisterDto registerDto);



    /**
     * 根据id修改用户信息
     * @param userDto
     * @return
     */
    ResponseResult<UserVo> updateUserById(UserDto userDto);

    /**
     * 添加普通用户
     * @param userDto
     * @return
     */
    ResponseResult<String> addUser(UserDto userDto);

    /**
     * 添加管理用户
     * @param userDto
     * @return
     */
    ResponseResult<String> addAdminUser(UserDto userDto);
    /**
     * 管理员用户信息查询
     * @param userPageDto
     * @return
     */
    ResponseResult<PageResponse<UserVo>> selectAdminUserList(UserPageDto userPageDto);

    /**
     * 普通用户信息查询
     * @param userPageDto
     * @return
     */
    ResponseResult<PageResponse<UserVo>> selectUserList(UserPageDto userPageDto);

    /**
     * 根据id封禁账户
     * @param userId
     * @return
     */
    ResponseResult<String> blockedAndUnsealAccount(Integer userId);

    /**
     * 用户信息分页查询
     * @param userPageDto
     * @return
     */
    ResponseResult<PageResponse<UserVo>> selectUsers(UserPageDto userPageDto);

    /**
     * 根据id查询用户信息
     * @param userId
     * @return
     */
    ResponseResult<UserVo> getByUserId(Integer userId);

    /**
     * 获取当前登录用户角色列表和权限列表
     * @param userId
     * @return
     */
    ResponseResult<Map<String, Object>> getPermsAndRoles(Integer userId);
}
